#!/usr/bin/python
# Copyright (C) 2003, Charles Wang.
# Author:  Charles Wang <charles@linux.net.cn>
# All rights reserved.
#
# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by the Free
# Software Foundation; either version 2, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but WITHOUT
# ANY WARRANT; without even the implied warranty of MERCHANTABILITY or FITNESS
# FOR A PARTICULAR PURPOSE. See the GNU General Public LIcense for more
# details.
#
# You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, 59 Temple
# Place - Suite 330, Boston, MA 02111-1307, USA.

import os
import string
import sys

from getopt import getopt

import kmdeps

# Usage:  python KModuleDeps.py [-d rootdir] [-k kernelversion] modules....
#   Show all modules and their dependencies with full path.

optlist, args = getopt(sys.argv[1:], 'd:k:')

rootdir = '/'
kernelver = os.uname()[2]

for (optname, optval) in optlist:
    if optname == '-d':
        rootdir = optval
    elif optname == '-k':
        kernelver = optval

depfn = os.path.join(rootdir, 'lib/modules', kernelver, 'modules.dep')
kmd = kmdeps.kmdict()
try:
    f = file(depfn)
    kmd.loaddeps(f)
    f.close()
except:
    print "Load %s failed, the rootdir(%s) or kernel version(%s) might be wrong.\n" % (depfn, rootdir, kernelver)
    raise

result = {}
for km in args:
    obj = kmd[km]
    result[obj] = 1
    for dep in obj.fulldeps():
        result[dep] = 1

print string.join(map(lambda dep: str(dep), result.keys()), '\n')
